ISUCON9予選のPHP参考実装をDocker Compose化してみた
結論、実際のファイルはこれから辿れる
以下の services を docker-compose で立ち上げる
app
php-fpm
mysql
nginx
shipment / payment
外部のマイクロサービス
Golang のDockerイメージで動かそうと思った
でも、benchmarker との相性はよくなかったので、 shipment / payment は docker-compose 化をやめた
benchmarker は外部マイクロサービスを内包するつくりになってる
Docker で動かすとなると、 各種マイクロサービスの host が localhost じゃなくなる
shipment サービスなら http://shipment:7000 とかになる
でも benchmarker の host は localhost 想定だしアクセスしないとスコア出なさそう
そもそも benchmarker が起動するときに port 占有してるから benchmarker が動かなかった
なので docker-compose で起動する際に localhost の IP を渡すようにした(めちゃ手間だけど)
その渡された IP を extra_hosts でマッピングする
まあ direnv とかでプロジェクトに LOCALHOST_IP を定義しておくのもあり
code:bash
LOCALHOST_IP=$(ifconfig en0 | awk '/inet / { print $2 }') docker-compose -f webapp/php/docker-compose.yml up -d